package com.etc.ui;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;

import com.etc.dao.EmpDao_HashMap;
import com.etc.entity.Emp;

/**
 * 输入可以循环操作(包含菜单,可以选择用户的操作)
 * 
 * @author Administrator
 *
 */
public class EmpMange_HashMap {

	private EmpDao_HashMap ed = new EmpDao_HashMap();

	/**
	 * 主菜单
	 */
	public void mainMenu() {
		Scanner input = new Scanner(System.in);
		while (true) {
			System.out.println("请输入您的选择0.退出系统1.增加2.显示所有3.修改4.删除5.按照员工编号查询6.按照部门编号查询7.模糊查询[姓名]");
			int choice = input.nextInt();
			switch (choice) {
			case 0:
				System.out.println("系统将会退出,再见~");
				System.exit(0);
				break;
			case 1:
				// 调用输入的方法
				inputEmp();
				break;
			case 2:
				// 调用显示所有的方法
				showEmp();
				break;
			case 3:
				updateEmp();
				break;
			case 4:
				deleteEmp();
				break;
			case 5:
				// 调用按照员工编号查询的方法
				showEmpByNo();
				break;
			case 6:
				// 调用按照员工编号查询的方法
				showEmpByDeptNo();
				break;
			case 7:
				// 调用按照员工编号查询的方法
				showEmpByNameLike();
				break;
			default:
				break;
			}
		}
	}

	/**
	 * 控制台的输入
	 */
	public void inputEmp() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入员工的编号,姓名,岗位,工资,部门编号[后面有了界面再优化]");
		String empNo = input.next();
		String empName = input.next();
		String job = input.next();
		double salary = input.nextDouble();
		int deptNo = input.nextInt();
		Emp emp = new Emp(empNo, empName, job, salary, deptNo);
		// 调用Dao添加的方法
		boolean flag = ed.addEmp(emp);
		if (flag)
			System.out.println("员工[" + empName + "]增加成功");
		else
			System.out.println("员工[" + empName + "]增加失败");
	}

	/**
	 * 修改员工
	 */
	public void updateEmp() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入员工的编号,新姓名,新岗位,新工资,新部门编号[后面有了界面再优化]");
		String empNo = input.next();
		String empName = input.next();
		String job = input.next();
		double salary = input.nextDouble();
		int deptNo = input.nextInt();
		Emp emp = new Emp(empNo, empName, job, salary, deptNo);
		// 调用Dao添加的方法
		boolean flag = ed.updateDept(emp);
		if (flag)
			System.out.println("员工[" + empName + "]修改成功");
		else
			System.out.println("员工[" + empName + "]修改失败");
	}

	/**
	 * 删除员工
	 */
	public void deleteEmp() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入员工的编号");
		String empNo = input.next();

		// 调用Dao添加的方法
		boolean flag = ed.delEmp(empNo);
		if (flag)
			System.out.println("员工[" + empNo + "]删除成功");
		else
			System.out.println("员工[" + empNo + "]删除失败");
	}

	/**
	 * 显示
	 */
	public void showEmp() {
		// 顺便做显示
		HashMap<String, Emp> hm = ed.getEmp();
		// 遍历员工信息
		System.out.println("**********员工列表如下***********");
		Iterator<String> itor = hm.keySet().iterator();

		while (itor.hasNext()) {
			String key = itor.next();
			// 通过key得到value
			System.out.println(hm.get(key));
		}
	}
	
	
	/**
	 * 根据部门编号查询员工信息
	 */
	public void showEmpByDeptNo() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入部门的编号");
		int deptNo = input.nextInt();
		
		HashMap<String, Emp> hm = ed.getEmpByDeptNo(deptNo);
		
		if(hm.size()==0)
		{
			System.out.println("没有找到记录");
		}
		else
		{
			// 遍历员工信息
			System.out.println("**********员工列表如下***********");
			Iterator<String> itor = hm.keySet().iterator();

			while (itor.hasNext()) {
				String key = itor.next();
				// 通过key得到value
				System.out.println(hm.get(key));
			}
		}
	}
	
	
	/**
	 * 模糊查询
	 */
	public void showEmpByNameLike() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入姓名关键字");
		String nameLike = input.next();
		
		HashMap<String, Emp> hm = ed.getEmpByLike(nameLike);
		
		if(hm.size()==0)
		{
			System.out.println("没有找到记录");
		}
		else
		{
			// 遍历员工信息
			System.out.println("**********员工列表如下***********");
			Iterator<String> itor = hm.keySet().iterator();

			while (itor.hasNext()) {
				String key = itor.next();
				// 通过key得到value
				System.out.println(hm.get(key));
			}
		}
	}
	
	

	public void showEmpByNo() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入员工的编号");
		String empNo = input.next();

		Emp emp = null;//ed.getEmpByNo(empNo);
		if (emp == null) {
			System.out.println("没有查询到编号为 [" + empNo + "] 的员工信息");
		} else {
			System.out.println("查找到了编号为[" + empNo + "] 的员工信息");
			System.out.println(emp);
		}
	}
}
